/* 两个序列分别为 A、B，将其存放到链表中，判断B是否是A的连续子序列 */
#include <iostream>
#include "headfun.h"
using namespace std;

// 判断B是否是A的连续子序列
int seq(LNode *A, LNode *B)
{
  // 指向两个链表
  LNode *p = A->next;
  LNode *pre = p;
  LNode *q = B->next;
  
  // 遍历两个链表
  while (p != NULL && q != NULL)
  {
    // 如果两个元素一致，判断下一个结点
    if (p->data == q->data)
    {
      p = p->next;
      q = q->next;
    }
    
    // 如果不一致，B链表从头开始遍历
    else
    {
      pre = pre->next;
      p = pre;
      q = B->next;
    }
  }
  
  // 如果B链表遍历完毕，则属于连续子序列
  if (q == NULL)
    return 1;
  else
    return 0;
}

int main()
{
  // 创建两个链表
  cout << " 链表A:";
  LNode *A = head_Linklist();
  cout << " 链表B:";
  LNode *B = head_Linklist();
  
  // 判断是否是连续子序列
  cout << "B是否是A的连续子序列:" << seq(A, B);
}